package imp.pruebas.montyhall;
import java.util.Random;


public class Main {

	private static boolean debug = false;

	protected static void log(String s) {
		if (debug) {
			System.out.println(s);
		}
	}
	
	protected static int jugar(int cantidadPuertas, int intentos, boolean cambiar) {
		CajaPremios cajaPremios = new CajaPremios();
		Random rand = new Random();
		int puertaElegida = -1;
		int fracasos = 0;
		int exitos = 0;

		for (int i =0; i<intentos; i++) {
			cajaPremios.inicializar(rand, cantidadPuertas);
			Jugador jugador = new Jugador(rand,cantidadPuertas);
			
			puertaElegida = jugador.elegirPuerta(cajaPremios.getPuertasAbiertas(),-1);
			boolean premio = false;
			
			log("");
			log("");
			log("**COMENZAMOS");
			log("**\tJUGADOR ELIGE PUERTA: " + puertaElegida );
			
			do {				
				/* Variacion... El arbitro tampoco conoce si detras de esa puerta hay algo */
				
				int puertaAbierta = cajaPremios.abrirPuertaNoElegidaNoPremio(puertaElegida);
				log("**\tABRIMOS PUERTA: " + puertaAbierta  + " Premio " + cajaPremios.tienePremio(puertaAbierta));
				if (cambiar) {
					puertaElegida = jugador.elegirPuerta(cajaPremios.getPuertasAbiertas(), puertaElegida);
					log("**\tJUGADOR CAMBIA A " + puertaElegida);
				}
				
			} while (cajaPremios.continuarAbriendo());
			
			if (cajaPremios.tienePremio(puertaElegida))
			{
				log("**\tEXITO: PUERTA " + puertaElegida + " TIENE PREMIO"  );
				exitos++;
			}
		}
		
		return exitos;

	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		int exitos;
		int cantidadPuertas = 3;
		
		debug = false;
		
		exitos = jugar(cantidadPuertas,1000,true);
		System.out.println("Cantidad de exitos cambiando [" + exitos  + "]");		

		exitos = jugar(cantidadPuertas,1000,false);
		System.out.println("Cantidad de exitos sin cambiar [" + exitos  + "]");

	}

}
